/*
 * Copyright (C) 2022 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import Ability from '@ohos.application.Ability'
import { Level } from '@ohos/logback'
import { Appender } from '@ohos/logback'
import { FilterEnum } from '@ohos/logback'
import { Configuration } from '@ohos/logback'

let configuration: Configuration = {
    file: '123.log',
    scan: true,
    appender: [{
                   name: 'STDOUT',
                   className: Appender.CONSOLE,
                   encoder: {
                       pattern: {
                           msg: '%date %level %logger %msg'
                       }
                   },
                   /*filter: { //LevelFilter
                       className: FilterEnum.LEVEL,
                       level: Level.WARN,
                       onMatch: Match.ACCEPT,
                       onMismatch: Match.DENY
                   }*/
                   filter: { //ThresholdFilter
                       className: FilterEnum.THRESHOLD,
                       level: Level.INFO,
                   }
               },
               {
                   name: 'LOGFILE',
                   className: Appender.FILE,
                   encoder: {
                       pattern: {
                           msg: '%level %logger %msg'
                       }
                   },
                   filter: { //ThresholdFilter
                       className: FilterEnum.THRESHOLD,
                       level: Level.INFO,
                   }
               }],
    logger: [{
                 name: 'com.log.hello',
                 additivity: true,
                 level: Level.WARN,
                 appenderRef: {
                     ref: 'STDOUT'
                 }
             },
             {
                 name: 'com.log.file',
                 additivity: true,
                 level: Level.WARN,
                 appenderRef: {
                     ref: 'LOGFILE'
                 }
             }],
    root: {
        level: Level.INFO,
        appenderRef: {
            ref: 'STDOUT'
        }
    }
}

export default class MainAbility extends Ability {
    onCreate(want, launchParam) {
        console.log("[Demo] MainAbility onCreate")
        globalThis.abilityWant = want;
    }

    onDestroy() {
        console.log("[Demo] MainAbility onDestroy")
    }

    onWindowStageCreate(windowStage) {
        // Main window is created, set main page for this ability
        console.log("[Demo] MainAbility onWindowStageCreate")
        globalThis.filesDir = this.context.filesDir
        globalThis.context = this.context
        globalThis.configure = configuration
        windowStage.setUIContent(this.context, "pages/index", null)
    }

    onWindowStageDestroy() {
        // Main window is destroyed, release UI related resources
        console.log("[Demo] MainAbility onWindowStageDestroy")
    }

    onForeground() {
        // Ability has brought to foreground
        console.log("[Demo] MainAbility onForeground")
    }

    onBackground() {
        // Ability has back to background
        console.log("[Demo] MainAbility onBackground")
    }
};
